如果你是按照筆者在第二篇文章介紹的 XAMPP 來建立開發環境,那麼輸入網址 http://127.0.0.1/phpmyadmin
到瀏覽器的網址列,會進到 XAMPP 預裝的資料庫管理工具,phpMyAdmin。
圖:phpMyAdmin 畫面
點選進到資料庫,會發現剛安裝完 WordPress 時,資料庫內會有 12 張資料表,這些是 WordPress 安裝程式自動建立的預設資料表。
接下來我們一起來看看,這些資料表有什麼用途。
資料表名稱 | 用途 |
---|---|
wp_posts |
所有的文章、頁面和修訂版本等內容資訊。 |
wp_postmeta |
文章或頁面相關的自訂欄位資訊。 |
wp_comments |
網站上的迴響。 |
wp_commentmeta |
與迴響相關的自訂欄位資訊。 |
wp_terms |
分類、標籤和其他自訂分類法。 |
wp_termmeta |
與分類相關的自訂欄位資訊。 |
wp_term_relationships |
將文章、頁面和分類、標籤建立關聯。 |
wp_term_taxonomy |
定義了分類、標籤和其他自訂分類之間關聯,包含上下層的從屬關係。 |
wp_users |
網站上的所有用戶資訊。 |
wp_usermeta |
與用戶相關的自訂欄位資訊。 |
wp_links |
舊版本的 WordPress 才有使用,拿來放網站連結和書籤。新版本的WordPress 並無使用。 |
wp_options |
網站的設定選項,如網站名稱、描述、啟用的外掛、佈景主題的設定等等。 |
其中 wp_links
是向下相容版本,已經沒有在使用了。
其它 11 個資料表都非常重要,而且許多重要的外掛都使用到這些基本的資料表,作更進一步的延伸功能。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
ID | bigint(20) | UN、AI、PK | 文章 ID |
post_author | bigint(20) | UN | 作者 ID |
post_date | datetime | 建立的日期和時刻 | |
post_date_gmt | datetime | 建立的格林威治時間 | |
post_content | longtext | 主要部分 | |
post_title | text | 標題 | |
post_excerpt | text | 摘要 | |
post_status | varchar(20) | 發布狀態,如 published 或 draft |
|
comment_status | varchar(20) | 是否允許迴響 | |
ping_status | varchar(20) | 是否允許 pingbacks 和 trackbacks |
|
post_password | varchar(255) | 查看內容是否需要密碼 | |
post_name | varchar(200) | 文章網址 | |
to_ping | text | 要通知的網址列表 | |
pinged | text | 已經通知的網址列表 | |
post_modified | datetime | 最後修改的日期和時刻 | |
post_modified_gmt | datetime | 最後修改的格林威治時間 | |
post_content_filtered | longtext | 一些外掛用來存放過濾後的內容 | |
post_parent | bigint(20) | UN | 如果內容是子內容,存放其父 ID |
guid | varchar(255) | 通常用於 RSS feed | |
menu_order | int(11) | 選單中的排序 | |
post_type | varchar(20) | 內容類型,例如 post 或 page |
|
post_mime_type | varchar(100) | 如果內容是附件,存放其 MIME 類型 | |
comment_count | bigint(20) | 迴響數量 |
這個資料表是 WordPress 中最重要的資料表,幾乎所有的內容相關操作都與這個資料表有關,只是利用了不同的 post_type
來增加新的資料種類,例如 WooCommerce 用 shop_order
這個 post_type
來存放訂單資料。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
meta_id | bigint(20) | UN AI PK | 元資料 ID |
post_id | bigint(20) | UN | 與 wp_posts 表中的 ID 欄位相關聯 |
meta_key | varchar(255) | 鍵 | |
meta_value | longtext | 值 |
開發者可以利用這個資料表擴充 wp_posts
相關聯的文章,提供與 wp_posts
資料表中的內容相關的額外資訊。
透過這個資料表,WordPress 提供了一個非常靈活的方式,讓使用者及開發者擴展內容的功能和屬性,使其可以存放更多的資訊。例如 WooCommerce 使用它來存放訂單的詳細資料,例如訂購人的姓名、地址、電話、等等。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
comment_ID | bigint(20) | UN、AI、PK | 迴響 ID |
comment_post_ID | bigint(20) | UN | 迴響所屬的文章或頁面的 ID |
comment_author | tinytext | 進行迴響的作者的名稱 | |
comment_author_email | varchar(100) | 作者的電子郵件地址 | |
comment_author_url | varchar(200) | 作者的網站網址 | |
comment_author_IP | varchar(100) | 作者的 IP 地址 | |
comment_date | datetime | 本地時區的迴響日期和時間 | |
comment_date_gmt | datetime | 格林威治標準時 (GMT) 的迴響日期和時間 | |
comment_content | text | 迴響的內容 | |
comment_karma | int(11) | 迴響的讚數 (通常用於某些外掛中) | |
comment_approved | varchar(20) | 迴響的狀態,如 1 表示批准,0 表示等待審核,spam 表示垃圾迴響等。 |
|
comment_agent | varchar(255) | 用戶的瀏覽器信息 | |
comment_type | varchar(20) | 迴響的類型,如 comment 、pingback 或 trackback |
|
comment_parent | bigint(20) | UN | 如果這是一個回覆,此欄位將儲存被回覆的迴響 ID |
user_id | bigint(20) | UN | 如果迴響者是網站的註冊用戶,此欄位將儲存其用戶ID |
此資料表用於存放 WordPress 網站上的所有迴響。不僅僅是文章和頁面的迴響而已,還包括像是 trackbacks
和 pingbacks
這樣的資料。WooCommerce 也用它來存放消費者留的訂單備註。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
meta_id | bigint(20) | UN、AI、PK | 元資訊 ID |
comment_id | bigint(20) | UN | 與該元資訊相關的迴響 ID |
meta_key | varchar(255) | 鍵 | |
meta_value | longtext | 值 |
這個資料表存放與迴響相關的額外資訊。作用與 wp_postmeta
和 wp_usermeta
類似。通過這個資料表,你可以為迴響添加額外的自定義欄位。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
term_id | bigint(20) | UN、AI、PK | 字詞 ID |
name | varchar(200) | 字詞的名稱 | |
slug | varchar(200) | 用於網址的字串 | |
term_group | bigint(10) | 用於字詞的同義詞功能 |
這個資料表存放 WordPress 中的字詞。字詞可以是分類、標籤或其他自定義的分類法的項目。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
meta_id | bigint(20) | UN、AI、PK | 元資訊 ID |
term_id | bigint(20) | UN | 與字詞資料表 wp_terms 相關聯的 ID |
meta_key | varchar(255) | 鍵 | |
meta_value | longtext | 值 |
這個資料表存放與字詞相關的額外資訊。與 wp_postmeta
、wp_commentmeta
和 wp_usermeta
類似。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
object_id | bigint(20) | UN、PK | 對象的ID,例如文章的 ID |
term_taxonomy_id | bigint(20) | UN、PK | 與字詞分類法 wp_term_taxonomy 資料表相關聯的 ID |
term_order | int(11) | 字詞的排序 |
這個資料表描述目標對象,以文章來說,就是文章和字詞之間的關係,例如文章屬於哪個分類或標籤。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
term_taxonomy_id | bigint(20) | UN、AI、PK | 字詞分類法 ID |
term_id | bigint(20) | UN | 與字詞資料表 wp_terms 相關聯的 ID |
taxonomy | varchar(32) | 分類法的名稱, 例如 category |
|
description | longtext | 字詞的描述 | |
parent | bigint(20) | UN | 父字詞的ID,用於分類的層次結構 |
count | bigint(20) | 使用該字詞的對象數量 |
這個資料表定義字詞屬於哪個分類法,例如分類、標籤、等等。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
ID | bigint(20) | UN、AI、PK | 使用者 ID |
user_login | varchar(60) | 使用者登入名稱 | |
user_pass | varchar(255) | 使用者密碼 (加密) | |
user_nicename | varchar(50) | 用於 URL 的使用者名稱 | |
user_email | varchar(100) | 的電子郵件地址 | |
user_url | varchar(100) | 的網站 URL | |
user_registered | datetime | 註冊日期和時間 | |
user_activation_key | varchar(255) | 用於帳戶啟用的金鑰 | |
user_status | int(11) | 使用者的狀態 | |
display_name | varchar(250) | 顯示在網站上的使用者名字 |
用於存放 WordPress 網站上的所有使用者的基本資料,包括使用者的登入名稱、密碼、電子郵件等。每個使用者在此資料表都有一個唯一的 ID,其他的資料表可以參照這個 ID 來存取特定使用者的資訊。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
umeta_id | bigint(20) | UN、AI、PK | 元資訊 ID |
user_id | bigint(20) | UN | 和資料表 wp_users 相關聯的 ID |
meta_key | varchar(255) | 鍵 | |
meta_value | longtext | 值 |
存放使用者的額外資訊,這些資訊可能不是每個使用者都需要的,例如使用者的頭像、自我介紹等。這個資料表與 wp_users
相關聯,通過 user_id
欄位來確定資料的所有者。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
link_id | bigint(20) | UN、AI、PK | 連結 ID |
link_url | varchar(255) | 連結的 URL 地址 | |
link_name | varchar(255) | 連結的名稱 | |
link_image | varchar(255) | 連結的圖像 URL | |
link_target | varchar(25) | 定義如何打開連結,例如:新視窗 | |
link_description | varchar(255) | 連結的描述 | |
link_visible | varchar(20) | 連結是否可見 | |
link_owner | bigint(20) | UN | 連結的所有者的使用者 ID |
link_rating | int(11) | 連結的評分 | |
link_updated | datetime | 最後一次更新連結的時間 | |
link_rel | varchar(255) | 連結的 rel 屬性值 |
|
link_notes | mediumtext | 關於連結的註釋 | |
link_rss | varchar(255) | 連結的 RSS 地址 |
用於存放和管理在 WordPress 網站上的外部連結。這個功能在新版的 WordPress 已不使用,用來向下相容早期的版本中,用於管理友情連結。
欄位名稱 | 資料型態 | 屬性 | 說明 |
---|---|---|---|
option_id | bigint(20) | UN、AI、PK | 選項 ID |
option_name | varchar(191) | 選項名稱 | |
option_value | longtext | 選項值 |
這個資料表是 WordPress 中非常重要的一部分,它存放了網站的所有設定和選項,例如網站的名稱、描述、URL、以及許多外掛和佈景主題的設定。當你在 WordPress 後台更新設定時,這些新的設定值會被儲存到這個資料表中。
註:
圖:WordPress 資料表關聯圖
筆者繪製了一個簡易的關聯圖幫助大家理解,以下為每張資料表的結構及說明。大致上可分為四類:文章、使用者、字詞分類以及迴響。
基礎的資料表就這 11 + 1 個,但隨著啟用的外掛越來越多,其它外掛自行建立的資料表,混在資料庫中,或許會讓你搞不清楚,那些資料表是原始的、最重要的,所以認識這些資料表,無論是否為程式開發者,或只是一般的部落客,對於日後自己維護 WordPress 站台,是非常有幫助的哦!
WordPress 提供了這些資料表,要如何使用它們,不用太擔心需要自己設計 SQL 語法來呼叫。已經有許多內建的函式可以直接新增、刪除、修改它們,除非是基於最佳化查詢語句的理由,不然幾乎用不太到自己寫 SQL 語法的部分。
課後思考:
有的外掛在停用或移除後,沒做垃圾回收,自動將所建立資料表和
wp_options
內的設定值刪除,因此資料庫裡越來越多不認識的東西,你會主動把它們刪除嗎?
前篇解答參考:
註冊函式到鉤點和過濾器內,每到達一個鉤點被觸發的時候,PHP 都是迴圈,依照優先級來執行它門。而 WordPress 的外掛系統都是採用鉤點來控制功能,因此外掛越多,整體的迴圈數也會越多,除了有效能的問題,還會有記憶體累積的問題。因此要達成為「No Code」的境界又要管理好 WordPress 網站,也是相當了不起的唷。